অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরি ডেটা ম্যানিপুলেশন এবং কালেকশন ম্যানেজমেন্টের জন্য শক্তিশালী টুল সরবরাহ করে। এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল Predicated Collections, যা প্রেডিকেট ব্যবহার করে একটি কালেকশনকে ফিল্টার এবং যাচাই করতে সক্ষম। এই ফিচারটি ব্যবহার করে আপনি সহজে শর্তসাপেক্ষ নির্বাচনের মাধ্যমে আপনার কালেকশনটি কাস্টমাইজ করতে পারেন। এটি আপনাকে নির্দিষ্ট শর্ত পূরণকারী উপাদানগুলি কালেকশনে রাখতে সাহায্য করে।
Predicated Collections হল এমন কালেকশন যা প্রেডিকেট (predicate) ব্যবহার করে তার উপাদানগুলির উপর শর্ত প্রয়োগ করে। প্রেডিকেট সাধারণত একটি লজিক্যাল শর্ত, যেমন একটি ফাংশন যা একটি ভ্যালুকে যাচাই করে এবং true
বা false
ফেরত দেয়। এই প্রক্রিয়া মূলত কালেকশন আইটেমগুলির মধ্যে শর্তসাপেক্ষ ফিল্টারিং নিশ্চিত করতে সাহায্য করে। আপনি চাইলে কালেকশন থেকে শুধুমাত্র সেই উপাদানগুলো নির্বাচন করতে পারেন, যেগুলি আপনার নির্দিষ্ট শর্ত পূরণ করে।
Predicated Collections আপনার কালেকশন ক্লাসে একটি predefined predicate বা শর্ত যুক্ত করে যা কালেকশনের আইটেমগুলো যাচাই করবে। প্রেডিকেট ফাংশনটি একটি কালেকশন আইটেম গ্রহণ করে এবং তার উপর নির্ধারিত শর্ত যাচাই করে true
অথবা false
ফেরত দেয়।
এটি কালেকশনের মধ্যে কাস্টম ফিল্টার প্রয়োগ করার জন্য উপকারী এবং এতে আপনার ডেটার শুদ্ধতা বজায় থাকে।
Predicated Collections ব্যবহার করার জন্য, আপনাকে প্রথমে একটি Predicate তৈরি করতে হবে এবং তারপর সেই প্রেডিকেটটি একটি কালেকশনে প্রয়োগ করতে হবে।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import java.util.ArrayList;
import java.util.List;
public class PredicatedCollectionExample {
public static void main(String[] args) {
// Create a list of integers
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(15);
numbers.add(20);
numbers.add(25);
// Define a predicate (condition) to filter even numbers
Predicate<Integer> isEven = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number % 2 == 0;
}
};
// Use CollectionUtils to filter the list based on the predicate
List<Integer> evenNumbers = ListUtils.predicatedList(numbers, isEven);
System.out.println("Even Numbers: " + evenNumbers); // Output: [10, 20]
}
}
এখানে:
List<Integer>
তৈরি করেছি এবং তার মধ্যে কিছু পূর্ণসংখ্যা (integer) যোগ করেছি।Predicate
ফাংশন তৈরি করা হয়েছে যা শর্ত হিসেবে চেক করে যে সংখ্যাটি even (যুগল) কিনা।ListUtils.predicatedList()
মেথড ব্যবহার করে আমরা এই প্রেডিকেটটি আমাদের মূল তালিকাতে প্রয়োগ করেছি, এবং তার মাধ্যমে even সংখ্যা (যুগল সংখ্যা) ফিল্টার করেছি।Predicated Collections শুধুমাত্র একটি শর্ত (predicate) প্রয়োগ করার জন্য সীমাবদ্ধ নয়। আপনি একাধিক শর্তের সাথে AND, OR, বা NOT অপারেটর ব্যবহার করে একাধিক প্রেডিকেট কম্বাইন করতে পারেন।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import java.util.ArrayList;
import java.util.List;
public class MultiplePredicatesExample {
public static void main(String[] args) {
// Create a list of integers
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(15);
numbers.add(20);
numbers.add(25);
// Define a predicate to filter even numbers
Predicate<Integer> isEven = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number % 2 == 0;
}
};
// Define another predicate to filter numbers greater than 15
Predicate<Integer> isGreaterThan15 = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number > 15;
}
};
// Combine both predicates using AND logic
Predicate<Integer> combinedPredicate = isEven.and(isGreaterThan15);
// Use CollectionUtils to filter the list based on the combined predicate
List<Integer> filteredNumbers = ListUtils.predicatedList(numbers, combinedPredicate);
System.out.println("Filtered Numbers: " + filteredNumbers); // Output: [20]
}
}
এখানে:
even
সংখ্যা এবং অপরটি greater than 15
শর্তের জন্য।and()
মেথড ব্যবহার করে দুটি প্রেডিকেটকে একত্রিত করেছি, এবং সেই অনুযায়ী কালেকশন থেকে সঠিক আইটেম নির্বাচন করা হয়েছে।Predicated Collections অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরির একটি শক্তিশালী ফিচার, যা আপনাকে শর্তসাপেক্ষ ডেটা ফিল্টারিং এবং কালেকশন ম্যানিপুলেশন করার জন্য সহজ পদ্ধতি প্রদান করে। আপনি প্রেডিকেটের মাধ্যমে কালেকশনের আইটেমগুলোর উপর শর্ত প্রয়োগ করতে পারেন, যা আপনাকে শুধুমাত্র সঠিক মানের উপাদানগুলি নির্বাচন করতে সাহায্য করে। এটি Java ডেভেলপারদের জন্য একটি অত্যন্ত কার্যকরী এবং কার্যক্ষম ফিচার, যা ডেটা ম্যানিপুলেশন এবং যাচাই প্রক্রিয়াকে অনেক সহজ করে তোলে।
common.read_more